/**
  ******************************************************************************
  * @文件名           : dri_Pulse.c
  * @作者             : citunhk
  * @功能介绍         : 脉冲流量计驱动
  *	@日期             : 2022.11.1
  ******************************************************************************
  * @注意
  *
  *
  *
  ******************************************************************************
  *更改记录
  *日期 修改人 修改内容
  *
  *
  *
  ******************************************************************************
  */
#include "dri_Pulse.h"
#include "sys_data.h"

static uint16_t gPulsePerCycle = 0;
static uint16_t gPulse_cnt = 0;
/**
* @函数名	DRI_Flow
* @功能	    计算流量
* @入口参数	无
* @返回值	流量
*/
float DRI_getFlowFromPulse(void)
{
	float pFlow = 0;
	static float pLast_Flow = 0;

	if(gPulsePerCycle < 3)//小信号切除
	{
		pFlow = 0;
	}
	else
	{
		pFlow = gPulsePerCycle / FP.Para.K_FlowPulse;  //脉冲转换为流量
	}

	pFlow = 0.9*pFlow + 0.1*pLast_Flow;  //滤波
	pLast_Flow = pFlow;

	pFlow = UP.Para.CaliFlow_K*pFlow + UP.Para.CaliFlow_B;  //用户校准

	return pFlow;
}

void DRI_PulseIncrement_callback(void)
{
	if(gPulse_cnt < 0xFFFF)
	     gPulse_cnt++;
}
void DRI_updataPulsePerCycle_callback(void)
{
	gPulsePerCycle = gPulse_cnt;
	gPulse_cnt = 0;
}

